# pandas基础

# 执行dos命令，下载pandas模块：
#  　　pip install pandas -i https://mirrors.aliyun.com/pypi/simple/
#     pip install xlrd -i https://mirrors.aliyun.com/pypi/simple/

# pandas的作用
# 　　pandas模块在Python中主要用于数据处理和分析，提供了一种简单、直观的方式来处理关系型和标记型数据。
# 主要功能：
# 　　数据读写：pandas提供了快速、灵活且便捷的函数和方法来读取和写入数据，支持多种文件格式，如Excel、CSV、SQL等。
# 　　数据清洗：pandas提供了数据清洗功能，如缺失值处理、重复值处理等，以及数据类型转换和数据排序等功能。
# 　　数据转换：pandas提供了数据转换功能，如数据重塑、数据合并等。
# 　　统计分析：pandas提供了简单的统计分析功能，如描述性统计、分组聚合等。
# 　　数据可视化：pandas可以与matplotlib等可视化库结合使用，实现数据的可视化。
# 　　
# 　　总的来说，pandas模块是Python数据分析的核心工具之一，可以帮助用户快速、准确地处理和分析数据。
#     现阶段，我们主要是用pandas模块对xls表格数据读取，结合ddt数据驱动来实现web自动化过程中的参数化。

# Pandas 默认获取sheet1的内容
# Pandas 会自动将第一个非空行（在大多数情况下是第一行）识别为列名，并将它们作为 DataFrame 的列名。
# 因此，将从第二行开始读取数据。


# 新建xls文件：data/account_data.xls


import pandas as pd

# 读取表格，右键运行时，工作目录是当前脚本同级别
# table = pd.read_excel('./data/account_data.xls')
# # 获取sheet1（默认）所有行数据
# data = table.head()
# print(f"获取到的行内容:\n{data}")
# print(type(data)) # 类型：pandas DataFrame 对象


# 读取表格，右键运行时，工作目录是当前脚本同级别
# table = pd.read_excel('./data/account_data.xls',sheet_name=1)
# # 获取sheet2所有行数据
# data = table.head()
# print(f"获取到的行内容:\n{data}")
# print(type(data)) # 类型：pandas DataFrame 对象



# table = pd.read_excel('./data/account_data.xls')
# # 获取行号，保存在列表中，并打印输出
# print(table.index.tolist())

# # 通过行索引号，读取指定的单行，table.loc方法读取的内容,都是保存在列表中
# row_data = table.loc[0].values
# print(row_data)

# # 读取指定的多行，第1行，第3行，第5行，数据会存在嵌套的列表里面：
# data = table.loc[[0,2,4]].values  # 读取指定多行的话，就要在loc[]里面嵌套列表指定行数
# print(data)

# 读取指定的单元格：
# 使用 iloc 来直接定位到具体的单元格，行列都是通过索引号定位
# data = table.iloc[[0], [1]].values  # 读取第一行第二列的值
# print(data)

# 应用1：Pandas处理Excel数据成为列表
# table = pd.read_excel('./data/account_data.xls')
# my_list = []
# for i in table.index.tolist():  # 获取行号的索引，并对其进行遍历
#     row_data = table.loc[i].to_list()  # 根据i来获取每一行指定的数据 并利用to_list转成列表
#     my_list.append(row_data)  # 将小列表追加到data列表中
# print(my_list)
# 当然也可以直接使用获取所有行信息，保存在列表中的语法：
# my_list2 = table.values.tolist()
# print(my_list2)





# 扩展：
# 读取指定的多行多列数
# 使用loc来定位到具体的行和列，并使用列表来指定行和列的名称
# data1 = table.loc[[0, 1], ['account', 'password']].values  # 读取第一行和第二列,即account和password列的数据
# data2 = table.loc[[0, 1]].values  # 读取第一行和第二列
# print('data1的数据：',data1)  # 如果存在重复的行或列名称，这里会报错，需要确保行和列名称的唯一性
# print('data2的数据：',data2)

# 获取所有行信息，保存在列表中
# print(table.values)

# 获取所有行的指定列
# data = table.loc[:, ['account', 'password']].values  # 读取account和password列的所有行的数据
# print(data)

# 获取列名并打印输出
# print(table.columns.values)




# 应用2：Pandas处理Excel数据成为字典
# table = pd.read_excel('./data/account_data.xls')
# data = []
# for i in table.index.values:  # 获取行号的索引，并对其进行遍历
#     row_data = table.loc[i].to_dict() # 根据i来获取每一行指定的数据 并利用to_dict转成字典
#     data.append(row_data)  # 将字典存放到列表中
# print(data)
# 当然也可以使用列表推导式：
# my_list = [table.loc[i].to_dict() for i in table.index.values]
# print(my_list)












